home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / debconf / transition_db.pl < prev   
Perl Script  |  2009-10-02  |  2KB  |  91 lines

  1. #!/usr/bin/perl -w
  2. # This file was preprocessed, do not edit!
  3. use strict;
  4. use Debconf::Db;
  5. use Debconf::Question;
  6. use Debconf::Template;
  7.  
  8. my $dir = shift || '/var/lib/debconf';
  9.  
  10. Debconf::Db->load;
  11.  
  12. our %questions;
  13. our %templates;
  14.  
  15. foreach my $thing (qw(templates debconf)) {
  16.     if (-e "$dir/$thing.db") {
  17.         eval qq{require "$dir/$thing.db"};
  18.         print STDERR $@ if $@;
  19.     }
  20.     else {
  21.         print STDERR "Skipping $dir/$thing.db: DNE\n";
  22.     }
  23. }
  24.  
  25. foreach my $t (keys %templates) {
  26.     $templates{$t}->{_name}=$t;
  27. }
  28.  
  29. my $skipped=0;
  30.  
  31. foreach my $item (keys %questions) {
  32.     my @owners=grep { $_ ne '' } keys %{$questions{$item}->{owners}};
  33.     delete $questions{$item}, next unless @owners;
  34.  
  35.     next unless defined $questions{$item}->{template}->{_name};
  36.  
  37.     my $tname=$questions{$item}->{template}->{_name};
  38.     $skipped++, next unless defined $tname;
  39.     my $type=$templates{$tname}->{type};
  40.     my $question=Debconf::Question->new($item, pop(@owners), $type);
  41.     $question->addowner($_, '') foreach @owners;
  42. }
  43.  
  44. my %seen_templates;
  45. foreach my $item (keys %questions) {
  46.     my $question=Debconf::Question->get($item);
  47.     my $tname=$questions{$item}->{template}->{_name};
  48.     $skipped++, next unless defined $tname;
  49.     my $template=Debconf::Template->get($tname);
  50.     unless (defined $template) {
  51.         $template=Debconf::Template->new($tname, $item, $templates{$tname}->{type});
  52.     }
  53.     unless ($seen_templates{$template}) {
  54.         $template->clearall;
  55.         foreach my $field (keys %{$templates{$tname}}) {
  56.             next if $field=~/^_name/; # except this one we added above.
  57.             $template->$field($templates{$tname}->{$field});
  58.         }
  59.     }
  60.     
  61.  
  62.     if (exists $questions{$item}->{flag_isdefault}) {
  63.         if ($questions{$item}->{flag_isdefault} eq 'false') {
  64.                 $question->flag('seen', 'true');
  65.         }
  66.         delete $questions{$item}->{flag_isdefault};
  67.     }
  68.     foreach my $flag (grep /^flag_/, keys %{$questions{$item}}) {
  69.         if ($questions{$item}->{$flag} eq 'true') {
  70.             $flag=~s/^flag_//;
  71.             $question->flag($flag, 'true');
  72.         }
  73.     }
  74.     foreach my $var (keys %{$questions{$item}->{variables}}) {
  75.         $question->variable($var,
  76.             $questions{$item}->{variables}->{$var});
  77.     }
  78.     if (exists $questions{$item}->{value} 
  79.         and defined $questions{$item}->{value}) {
  80.         $question->value($questions{$item}->{value});
  81.     }
  82.  
  83.     $question->template($questions{$item}->{template}->{_name});
  84. }
  85.  
  86. Debconf::Db->save;
  87.  
  88. if ($skipped) {
  89.     print STDERR "While upgrading the debconf database, $skipped corrupt items were skipped.\n";
  90. }
  91.